/* * Copyright 2008, Unitils.org * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.unitils.reflectionassert.report.impl; import org.unitils.reflectionassert.report.DifferenceView; import static org.unitils.reflectionassert.report.impl.DefaultDifferenceReport.MAX_LINE_SIZE; import org.unitils.reflectionassert.difference.Difference; import org.unitils.core.util.ObjectFormatter; import junit.framework.AssertionFailedError; /** * @author Filip Neven */ public class SimpleDifferenceView implements DifferenceView { private ObjectFormatter objectFormatter = new ObjectFormatter(); /** * Creates a string representation of the given difference tree. * * @param difference The root difference, not null * @return The string representation, not null */ public String createView(Difference difference) { String expectedStr = objectFormatter.format(difference.getLeftValue()); String actualStr = objectFormatter.format(difference.getRightValue()); String formattedOnOneLine = formatOnOneLine(expectedStr, actualStr); if (AssertionFailedError.class.getName().length() + 2 + formattedOnOneLine.length() < MAX_LINE_SIZE) { return formattedOnOneLine; } else { return formatOnTwoLines(expectedStr, actualStr); } } protected String formatOnOneLine(String expectedStr, String actualStr) { return new StringBuilder().append("Expected: ").append(expectedStr).append(", actual: ").append(actualStr).toString(); } protected String formatOnTwoLines(String expectedStr, String actualStr) { StringBuilder result = new StringBuilder(); result.append("\nExpected: ").append(expectedStr); result.append("\n Actual: ").append(actualStr); return result.toString(); } }